package com.kdgz.kdgz.controller;

import com.kdgz.kdgz.beans.Staff;
import com.kdgz.kdgz.sevice.StaffService;

import com.kdgz.kdgz.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.util.List;

/**
 * @Desc
 * @date 2021/3/17
 */
@RestController
public class StaffController {
    @Autowired
    StaffService staffService;

    /**
     * 通过员工id获得员工对象
     * @param sid 员工id
     * @return com.kdgz.kdgz.beans.Staff
     */
    @GetMapping("/staff/{sid}")
    public Staff getBySid(@PathVariable("sid") Integer sid){
        return staffService.getStaffBySid(sid);
    }

    /**
     *  验证用户名和密码登录
     * @param staff 存放员工id和密码
     * @param session 存放登录员工信息
     * @return java.lang.String
     */
    @PostMapping("/login")
    public Staff login(@RequestBody Staff staff, HttpSession session) {
//         验证用户名和密码
        System.out.println(staff.toString());
        Staff user=staffService.login(staff);
        if(user==null){
            return null;
        }else {
            session.setAttribute("user", user);
            return user;
        }
    }

    /**
     *  注册员工账号
     * @param staff 注册员工的信息
     * @return java.lang.String
     */
    @PostMapping("/register")
    public Result register(@RequestBody Staff staff) {
        // 注册用户
        Integer register = staffService.register(staff);
        // 返回注册id给用户
        return Result.success();
    }

    /**
     * 获得所有员工对象
     * @return org.springframework.web.servlet.ModelAndView
     */
    @GetMapping("/staffs")
    public List<Staff> list() {
         return staffService.list();
    }

    @GetMapping("/staffs/1")
    public List<Staff> staffsList(){return staffService.getOrderStaff();}
    /**
     * 获得员工总数
     * @return org.springframework.ui.Model
     */
    @GetMapping("/totalCount")
    public Integer getTotalCount() {
        return staffService.getStaffCount();
    }
    /**
     * 获得员工总支出
     * @return org.springframework.ui.Model
     */
    @GetMapping("/totalFinance")
    public BigDecimal getTotalFinance() {
        return staffService.getTotalSalary();
    }
    /**
     *  获得某个状态下所有员工数量
     * @param status 需要获得的状态
     * @return org.springframework.ui.Model
     */
    @GetMapping("/staffByStatus/{status}")
    public Integer getStaffStatus(@PathVariable("status") Integer status){
        return staffService.getStatusCount(status);
    }

    /**
     *  更新员工数据
     * @param staff 需要更新的员工（必须含有id）
     * @return java.lang.String
     */
    @PutMapping("/staff")
    public Result updateStaff(@RequestBody Staff staff,HttpSession session)  {
        System.out.println(staff.toString());
        if (staffService.updateStaff(staff)!=0){
            // 修改成功，更新数据
            Staff oldStaff= (Staff) session.getAttribute("user");
            if(staff.getSid()==oldStaff.getSid()){
                session.setAttribute("user",staff);
            }
            return Result.success();
        }else {
            // 修改失败，返回错误信息
            return Result.fail("错误");
        }

    }

    /**
     * 根据id删除员工
     * @param id 员工id
     * @return java.lang.String
     */
    @DeleteMapping("/staff")
    public String deleteStaff(@RequestParam("id") Integer id) {
        Integer flag = staffService.deleteStaff(id);
        if (flag!=0) {
            // 删除成功，更新数据
            return "success";
        }else {
            // 删除失败
            return "failure";
        }
    }
}
